package com.gym.utils;

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * MD5 加密工具类
 * @author 江雪林
 * @create 2021-01-29
 */
public class MD5Util {
    /**
     *   对字符串 MD5 加盐值加密
     *
     * @param value 传入要加密的字符串
     * @param saltValue 传入要加的盐值
     * @return MD5加密后生成32位(小写字母+数字)字符串
     */
    public static String MD5 (String value, String saltValue) {
        try {
            // 1、获得MD5摘要算法的 MessageDigest 对象
            MessageDigest md = MessageDigest.getInstance("MD5");

            // 2、使用指定的字节更新摘要
            md.update(value.getBytes());
            md.update(saltValue.getBytes());

            // digest()最后确定返回md5 hash值，返回值为8位字符串。因为md5 hash值是16位的hex值，实际上就是8位的字符
            // BigInteger函数则将8位的字符串转换成16位hex值，用字符串来表示；得到字符串形式的hash值。1 固定值
            return new BigInteger(1,  md.digest()).toString(16);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
            System.out.println("md5 "+value+"加密失败！");
            return null;
        }
    }

}

